---
title: Localization
description: A library that provides an interface for native user localization information.
sourceCodeUrl: 'https://github.com/expo/expo/tree/sdk-53/packages/expo-localization'
packageName: 'expo-localization'
iconUrl: '/static/images/packages/expo-localization.png'
platforms: ['android', 'ios', 'tvos', 'web']
---

import APISection from '~/components/plugins/APISection';
import { APIInstallSection } from '~/components/plugins/InstallSection';
import { ConfigPluginExample } from '~/ui/components/ConfigSection';

`expo-localization` allows you to Localize your app, customizing the experience for specific regions, languages, or cultures. It also provides access to the locale data on the native device. Using a localization library such as [`lingui-js`](https://lingui.dev/introduction), [`react-i18next`](https://react.i18next.com/), [`react-intl`](https://formatjs.io/docs/getting-started/installation/) or [`i18n-js`](https://github.com/fnando/i18n-js) with `expo-localization` will enable you to create a very accessible experience for users.

## Installation

<APIInstallSection />

## Configuration in app config

You can configure `expo-localization` using its built-in [config plugin](/config-plugins/introduction/) if you use config plugins in your project ([Continuous Native Generation (CNG)](/workflow/continuous-native-generation/)). The plugin allows you to configure various properties that cannot be set at runtime and require building a new app binary to take effect. If your app does **not** use CNG, then you'll need to manually configure the library.

<ConfigPluginExample>

```json app.json
{
  "expo": {
    "plugins": ["expo-localization"]
  }
}
```

</ConfigPluginExample>

## Usage

Find more information about using `expo-localization` and adding support for right-to-left languages in the [Localization](/guides/localization) guide.

## API

```jsx
import { getLocales, getCalendars } from 'expo-localization';
```

### Behavior

You can use synchronous `getLocales()` and `getCalendars()` methods to get the locale settings of the user device. On iOS, the results will remain the same while the app is running.

On Android, the user can change locale preferences in Settings without restarting apps. To keep the localization current, you can rerun the `getLocales()` and `getCalendars()` methods every time the app returns to the foreground. Use `AppState` to detect this.

<APISection packageName="expo-localization" apiName="Localization" />
